{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 人脸识别与计算机视觉文档实践\n",
    "\n",
    ">* 本周主要内容：人脸（Face） API文档不同平台对比与实践及计算机视觉入门（认知服务）\n",
    ">* 202009_API_人工智能与机器学习_week03\n",
    ">*  电子讲义设计者：许智超\n",
    "<br/>\n",
    "<br/>\n",
    "\n",
    "## 复习\n",
    "\n",
    "* 上周主要内容： \n",
    ">    * 1、API文档\n",
    ">    * 2、认知服务-人脸识别\n",
    ">    * 3、pandas黑魔法（json_normalize）\n",
    "-----\n",
    "* 提问、检查与扩展：\n",
    ">    * 1、上周的Azure face API随机检查2位同学，对于API文档是否有能力详细阅读？\n",
    ">    * 2、抽查2位同学，对于获取的数据用途有何思考？是否尝试其他平台（XXX API、XXX API）      \n",
    ">    * 3、扩展: 我们尝试抽取了4张图片，包含AB、ABC、BCD、ABCD四个人物特征，如何通过API检查数据差异？\n",
    "  \n",
    "\n",
    "-----\n",
    "## 本周学习目标：\n",
    "\n",
    "> $\\mathcal{1、Azure 认知服务-人脸集合演示}$     \n",
    "> $\\mathcal{2、Face++ 之 FaceSets 实践}$     \n",
    "> $\\mathcal{3、计算机视觉实践}$    \n",
    "\n",
    "\n",
    "\n",
    "## 学生权限\n",
    "\n",
    "* [访问学生权益](https://azure.microsoft.com/zh-cn/education/)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       "/* 本电子讲义使用之CSS */\n",
       "div.code_cell {\n",
       "    background-color: #e5f1fe;\n",
       "}\n",
       "div.cell.selected {\n",
       "    background-color: #effee2;\n",
       "    font-size: 2rem;\n",
       "    line-height: 2.4rem;\n",
       "}\n",
       "div.cell.selected .rendered_html table {\n",
       "    font-size: 2rem !important;\n",
       "    line-height: 2.4rem !important;\n",
       "}\n",
       ".rendered_html pre code {\n",
       "    background-color: #C4E4ff;   \n",
       "    padding: 2px 25px;\n",
       "}\n",
       ".rendered_html pre {\n",
       "    background-color: #99c9ff;\n",
       "}\n",
       "div.code_cell .CodeMirror {\n",
       "    font-size: 2rem !important;\n",
       "    line-height: 2.4rem !important;\n",
       "}\n",
       ".rendered_html img, .rendered_html svg {\n",
       "    max-width: 50%;\n",
       "    height: auto;\n",
       "    float: center;\n",
       "}\n",
       "/* Gradient transparent - color - transparent */\n",
       "hr {\n",
       "    border: 0;\n",
       "    border-bottom: 1px dashed #ccc;\n",
       "}\n",
       ".emoticon{\n",
       "    font-size: 5rem;\n",
       "    line-height: 4.4rem;\n",
       "    text-align: center;\n",
       "    vertical-align: middle;\n",
       "}\n",
       "\n",
       "</style>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%%html\n",
    "<style>\n",
    "/* 本电子讲义使用之CSS */\n",
    "div.code_cell {\n",
    "    background-color: #e5f1fe;\n",
    "}\n",
    "div.cell.selected {\n",
    "    background-color: #effee2;\n",
    "    font-size: 2rem;\n",
    "    line-height: 2.4rem;\n",
    "}\n",
    "div.cell.selected .rendered_html table {\n",
    "    font-size: 2rem !important;\n",
    "    line-height: 2.4rem !important;\n",
    "}\n",
    ".rendered_html pre code {\n",
    "    background-color: #C4E4ff;   \n",
    "    padding: 2px 25px;\n",
    "}\n",
    ".rendered_html pre {\n",
    "    background-color: #99c9ff;\n",
    "}\n",
    "div.code_cell .CodeMirror {\n",
    "    font-size: 2rem !important;\n",
    "    line-height: 2.4rem !important;\n",
    "}\n",
    ".rendered_html img, .rendered_html svg {\n",
    "    max-width: 50%;\n",
    "    height: auto;\n",
    "    float: center;\n",
    "}\n",
    "/* Gradient transparent - color - transparent */\n",
    "hr {\n",
    "    border: 0;\n",
    "    border-bottom: 1px dashed #ccc;\n",
    "}\n",
    ".emoticon{\n",
    "    font-size: 5rem;\n",
    "    line-height: 4.4rem;\n",
    "    text-align: center;\n",
    "    vertical-align: middle;\n",
    "}\n",
    "\n",
    "</style>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 复习\n",
    "\n",
    "> 1、回顾阅读API文档的关键点     \n",
    "> 2、正确阅读json数据 [jsonviewer.stack.hu(json转换检查数据)](http://jsonviewer.stack.hu)    \n",
    "> 3、pandas 中的json_normalize模块/函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A-1 面部检测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'[{\"faceId\": \"1f2bf379-70dd-41be-86c3-a63f2deb7c7f\", \"faceRectangle\": {\"top\": 118, \"left\": 144, \"width\": 88, \"height\": 88}, \"faceAttributes\": {\"smile\": 0.813, \"headPose\": {\"pitch\": -3.4, \"roll\": 1.4, \"yaw\": 9.4}, \"gender\": \"male\", \"age\": 19.0, \"facialHair\": {\"moustache\": 0.1, \"beard\": 0.1, \"sideburns\": 0.1}, \"glasses\": \"NoGlasses\", \"emotion\": {\"anger\": 0.0, \"contempt\": 0.003, \"disgust\": 0.0, \"fear\": 0.0, \"happiness\": 0.813, \"neutral\": 0.184, \"sadness\": 0.0, \"surprise\": 0.0}, \"blur\": {\"blurLevel\": \"low\", \"value\": 0.21}, \"exposure\": {\"exposureLevel\": \"overExposure\", \"value\": 0.81}, \"noise\": {\"noiseLevel\": \"low\", \"value\": 0.01}, \"makeup\": {\"eyeMakeup\": false, \"lipMakeup\": false}, \"accessories\": [], \"occlusion\": {\"foreheadOccluded\": false, \"eyeOccluded\": false, \"mouthOccluded\": false}, \"hair\": {\"bald\": 0.18, \"invisible\": false, \"hairColor\": [{\"color\": \"brown\", \"confidence\": 0.95}, {\"color\": \"black\", \"confidence\": 0.93}, {\"color\": \"other\", \"confidence\": 0.23}, {\"color\": \"blond\", \"confidence\": 0.23}, {\"color\": \"gray\", \"confidence\": 0.21}, {\"color\": \"red\", \"confidence\": 0.15}, {\"color\": \"white\", \"confidence\": 0.0}]}}}, {\"faceId\": \"f659ea05-a658-497d-9b2a-eb89e74d5403\", \"faceRectangle\": {\"top\": 117, \"left\": 376, \"width\": 64, \"height\": 64}, \"faceAttributes\": {\"smile\": 0.456, \"headPose\": {\"pitch\": -1.1, \"roll\": -0.2, \"yaw\": 6.6}, \"gender\": \"female\", \"age\": 22.0, \"facialHair\": {\"moustache\": 0.0, \"beard\": 0.0, \"sideburns\": 0.0}, \"glasses\": \"NoGlasses\", \"emotion\": {\"anger\": 0.0, \"contempt\": 0.001, \"disgust\": 0.0, \"fear\": 0.0, \"happiness\": 0.456, \"neutral\": 0.542, \"sadness\": 0.001, \"surprise\": 0.0}, \"blur\": {\"blurLevel\": \"low\", \"value\": 0.16}, \"exposure\": {\"exposureLevel\": \"goodExposure\", \"value\": 0.58}, \"noise\": {\"noiseLevel\": \"low\", \"value\": 0.01}, \"makeup\": {\"eyeMakeup\": false, \"lipMakeup\": true}, \"accessories\": [], \"occlusion\": {\"foreheadOccluded\": false, \"eyeOccluded\": false, \"mouthOccluded\": false}, \"hair\": {\"bald\": 0.08, \"invisible\": false, \"hairColor\": [{\"color\": \"black\", \"confidence\": 1.0}, {\"color\": \"other\", \"confidence\": 0.63}, {\"color\": \"brown\", \"confidence\": 0.46}, {\"color\": \"gray\", \"confidence\": 0.39}, {\"color\": \"blond\", \"confidence\": 0.03}, {\"color\": \"red\", \"confidence\": 0.01}, {\"color\": \"white\", \"confidence\": 0.0}]}}}, {\"faceId\": \"5e17a0f5-0a18-4a83-821a-31dd3fd014cd\", \"faceRectangle\": {\"top\": 41, \"left\": 676, \"width\": 52, \"height\": 52}, \"faceAttributes\": {\"smile\": 1.0, \"headPose\": {\"pitch\": 3.0, \"roll\": -1.3, \"yaw\": -0.6}, \"gender\": \"male\", \"age\": 25.0, \"facialHair\": {\"moustache\": 0.1, \"beard\": 0.1, \"sideburns\": 0.1}, \"glasses\": \"ReadingGlasses\", \"emotion\": {\"anger\": 0.0, \"contempt\": 0.0, \"disgust\": 0.0, \"fear\": 0.0, \"happiness\": 1.0, \"neutral\": 0.0, \"sadness\": 0.0, \"surprise\": 0.0}, \"blur\": {\"blurLevel\": \"low\", \"value\": 0.0}, \"exposure\": {\"exposureLevel\": \"goodExposure\", \"value\": 0.66}, \"noise\": {\"noiseLevel\": \"low\", \"value\": 0.07}, \"makeup\": {\"eyeMakeup\": false, \"lipMakeup\": false}, \"accessories\": [{\"type\": \"glasses\", \"confidence\": 1.0}], \"occlusion\": {\"foreheadOccluded\": false, \"eyeOccluded\": false, \"mouthOccluded\": false}, \"hair\": {\"bald\": 0.06, \"invisible\": false, \"hairColor\": [{\"color\": \"black\", \"confidence\": 0.98}, {\"color\": \"brown\", \"confidence\": 0.96}, {\"color\": \"other\", \"confidence\": 0.22}, {\"color\": \"gray\", \"confidence\": 0.21}, {\"color\": \"red\", \"confidence\": 0.09}, {\"color\": \"blond\", \"confidence\": 0.08}, {\"color\": \"white\", \"confidence\": 0.0}]}}}, {\"faceId\": \"c9b6de20-4b5c-4a87-88ce-482b2049a45c\", \"faceRectangle\": {\"top\": 69, \"left\": 445, \"width\": 52, \"height\": 52}, \"faceAttributes\": {\"smile\": 1.0, \"headPose\": {\"pitch\": 0.2, \"roll\": 2.6, \"yaw\": 1.5}, \"gender\": \"female\", \"age\": 23.0, \"facialHair\": {\"moustache\": 0.0, \"beard\": 0.0, \"sideburns\": 0.0}, \"glasses\": \"NoGlasses\", \"emotion\": {\"anger\": 0.0, \"contempt\": 0.0, \"disgust\": 0.0, \"fear\": 0.0, \"happiness\": 1.0, \"neutral\": 0.0, \"sadness\": 0.0, \"surprise\": 0.0}, \"blur\": {\"blurLevel\": \"low\", \"value\": 0.0}, \"exposure\": {\"exposureLevel\": \"goodExposure\", \"value\": 0.56}, \"noise\": {\"noiseLevel\": \"medium\", \"value\": 0.33}, \"makeup\": {\"eyeMakeup\": false, \"lipMakeup\": false}, \"accessories\": [], \"occlusion\": {\"foreheadOccluded\": false, \"eyeOccluded\": false, \"mouthOccluded\": false}, \"hair\": {\"bald\": 0.11, \"invisible\": false, \"hairColor\": [{\"color\": \"black\", \"confidence\": 1.0}, {\"color\": \"brown\", \"confidence\": 0.81}, {\"color\": \"other\", \"confidence\": 0.41}, {\"color\": \"gray\", \"confidence\": 0.37}, {\"color\": \"blond\", \"confidence\": 0.03}, {\"color\": \"red\", \"confidence\": 0.02}, {\"color\": \"white\", \"confidence\": 0.0}]}}}, {\"faceId\": \"c29e7a06-72de-4b77-bc5d-5568145f10eb\", \"faceRectangle\": {\"top\": 95, \"left\": 238, \"width\": 51, \"height\": 51}, \"faceAttributes\": {\"smile\": 0.981, \"headPose\": {\"pitch\": 7.2, \"roll\": 1.2, \"yaw\": 2.6}, \"gender\": \"female\", \"age\": 18.0, \"facialHair\": {\"moustache\": 0.0, \"beard\": 0.0, \"sideburns\": 0.0}, \"glasses\": \"ReadingGlasses\", \"emotion\": {\"anger\": 0.0, \"contempt\": 0.0, \"disgust\": 0.0, \"fear\": 0.0, \"happiness\": 0.981, \"neutral\": 0.019, \"sadness\": 0.0, \"surprise\": 0.0}, \"blur\": {\"blurLevel\": \"low\", \"value\": 0.07}, \"exposure\": {\"exposureLevel\": \"goodExposure\", \"value\": 0.69}, \"noise\": {\"noiseLevel\": \"medium\", \"value\": 0.48}, \"makeup\": {\"eyeMakeup\": false, \"lipMakeup\": false}, \"accessories\": [{\"type\": \"glasses\", \"confidence\": 1.0}], \"occlusion\": {\"foreheadOccluded\": false, \"eyeOccluded\": false, \"mouthOccluded\": false}, \"hair\": {\"bald\": 0.11, \"invisible\": false, \"hairColor\": [{\"color\": \"black\", \"confidence\": 0.98}, {\"color\": \"brown\", \"confidence\": 0.86}, {\"color\": \"other\", \"confidence\": 0.4}, {\"color\": \"gray\", \"confidence\": 0.36}, {\"color\": \"blond\", \"confidence\": 0.09}, {\"color\": \"red\", \"confidence\": 0.08}, {\"color\": \"white\", \"confidence\": 0.0}]}}}, {\"faceId\": \"0192c19c-eb0a-447b-82f1-740f32eb004a\", \"faceRectangle\": {\"top\": 94, \"left\": 540, \"width\": 48, \"height\": 48}, \"faceAttributes\": {\"smile\": 1.0, \"headPose\": {\"pitch\": -7.7, \"roll\": 5.0, \"yaw\": 6.9}, \"gender\": \"female\", \"age\": 19.0, \"facialHair\": {\"moustache\": 0.0, \"beard\": 0.0, \"sideburns\": 0.0}, \"glasses\": \"NoGlasses\", \"emotion\": {\"anger\": 0.0, \"contempt\": 0.0, \"disgust\": 0.0, \"fear\": 0.0, \"happiness\": 1.0, \"neutral\": 0.0, \"sadness\": 0.0, \"surprise\": 0.0}, \"blur\": {\"blurLevel\": \"low\", \"value\": 0.08}, \"exposure\": {\"exposureLevel\": \"goodExposure\", \"value\": 0.65}, \"noise\": {\"noiseLevel\": \"low\", \"value\": 0.08}, \"makeup\": {\"eyeMakeup\": false, \"lipMakeup\": false}, \"accessories\": [], \"occlusion\": {\"foreheadOccluded\": false, \"eyeOccluded\": false, \"mouthOccluded\": false}, \"hair\": {\"bald\": 0.1, \"invisible\": false, \"hairColor\": [{\"color\": \"black\", \"confidence\": 1.0}, {\"color\": \"brown\", \"confidence\": 0.88}, {\"color\": \"other\", \"confidence\": 0.35}, {\"color\": \"gray\", \"confidence\": 0.33}, {\"color\": \"blond\", \"confidence\": 0.05}, {\"color\": \"red\", \"confidence\": 0.04}, {\"color\": \"white\", \"confidence\": 0.0}]}}}]'"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# A-1 面部检测\n",
    "import requests\n",
    "import json\n",
    "\n",
    "# set to your own subscription key value\n",
    "subscription_key = \"f212f71663134b73bdec4a5a9aece2f0\"\n",
    "assert subscription_key\n",
    "\n",
    "# replace <My Endpoint String> with the string from your endpoint URL\n",
    "face_api_url = 'https://api-hjq.cognitiveservices.azure.com/face/v1.0/detect'\n",
    "\n",
    "# 请求正文body\n",
    "image_url = 'http://newmedia.nfu.edu.cn/wcy/wp-content/uploads/2018/04/post_20180424__NFU_DoraHacks_imoji%E5%9B%A2%E9%98%9F.jpg'\n",
    "\n",
    "headers = {'Ocp-Apim-Subscription-Key': subscription_key}\n",
    "\n",
    "# 请求参数parameters\n",
    "params = {\n",
    "    'returnFaceId': 'true',\n",
    "    'returnFaceLandmarks': 'false',\n",
    "    # 可选参数,请仔细阅读API文档\n",
    "    'returnFaceAttributes': 'age,gender,headPose,smile,facialHair,glasses,emotion,hair,makeup,occlusion,accessories,blur,exposure,noise',\n",
    "}\n",
    "\n",
    "response = requests.post(face_api_url, params=params,\n",
    "                         headers=headers, json={\"url\": image_url})\n",
    "# json.dumps 将json--->bytes\n",
    "json.dumps(response.json())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A-2 json转译\n",
    "\n",
    "> * bytes ---> json\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'faceId': '1f2bf379-70dd-41be-86c3-a63f2deb7c7f',\n",
       "  'faceRectangle': {'top': 118, 'left': 144, 'width': 88, 'height': 88},\n",
       "  'faceAttributes': {'smile': 0.813,\n",
       "   'headPose': {'pitch': -3.4, 'roll': 1.4, 'yaw': 9.4},\n",
       "   'gender': 'male',\n",
       "   'age': 19.0,\n",
       "   'facialHair': {'moustache': 0.1, 'beard': 0.1, 'sideburns': 0.1},\n",
       "   'glasses': 'NoGlasses',\n",
       "   'emotion': {'anger': 0.0,\n",
       "    'contempt': 0.003,\n",
       "    'disgust': 0.0,\n",
       "    'fear': 0.0,\n",
       "    'happiness': 0.813,\n",
       "    'neutral': 0.184,\n",
       "    'sadness': 0.0,\n",
       "    'surprise': 0.0},\n",
       "   'blur': {'blurLevel': 'low', 'value': 0.21},\n",
       "   'exposure': {'exposureLevel': 'overExposure', 'value': 0.81},\n",
       "   'noise': {'noiseLevel': 'low', 'value': 0.01},\n",
       "   'makeup': {'eyeMakeup': False, 'lipMakeup': False},\n",
       "   'accessories': [],\n",
       "   'occlusion': {'foreheadOccluded': False,\n",
       "    'eyeOccluded': False,\n",
       "    'mouthOccluded': False},\n",
       "   'hair': {'bald': 0.18,\n",
       "    'invisible': False,\n",
       "    'hairColor': [{'color': 'brown', 'confidence': 0.95},\n",
       "     {'color': 'black', 'confidence': 0.93},\n",
       "     {'color': 'other', 'confidence': 0.23},\n",
       "     {'color': 'blond', 'confidence': 0.23},\n",
       "     {'color': 'gray', 'confidence': 0.21},\n",
       "     {'color': 'red', 'confidence': 0.15},\n",
       "     {'color': 'white', 'confidence': 0.0}]}}},\n",
       " {'faceId': 'f659ea05-a658-497d-9b2a-eb89e74d5403',\n",
       "  'faceRectangle': {'top': 117, 'left': 376, 'width': 64, 'height': 64},\n",
       "  'faceAttributes': {'smile': 0.456,\n",
       "   'headPose': {'pitch': -1.1, 'roll': -0.2, 'yaw': 6.6},\n",
       "   'gender': 'female',\n",
       "   'age': 22.0,\n",
       "   'facialHair': {'moustache': 0.0, 'beard': 0.0, 'sideburns': 0.0},\n",
       "   'glasses': 'NoGlasses',\n",
       "   'emotion': {'anger': 0.0,\n",
       "    'contempt': 0.001,\n",
       "    'disgust': 0.0,\n",
       "    'fear': 0.0,\n",
       "    'happiness': 0.456,\n",
       "    'neutral': 0.542,\n",
       "    'sadness': 0.001,\n",
       "    'surprise': 0.0},\n",
       "   'blur': {'blurLevel': 'low', 'value': 0.16},\n",
       "   'exposure': {'exposureLevel': 'goodExposure', 'value': 0.58},\n",
       "   'noise': {'noiseLevel': 'low', 'value': 0.01},\n",
       "   'makeup': {'eyeMakeup': False, 'lipMakeup': True},\n",
       "   'accessories': [],\n",
       "   'occlusion': {'foreheadOccluded': False,\n",
       "    'eyeOccluded': False,\n",
       "    'mouthOccluded': False},\n",
       "   'hair': {'bald': 0.08,\n",
       "    'invisible': False,\n",
       "    'hairColor': [{'color': 'black', 'confidence': 1.0},\n",
       "     {'color': 'other', 'confidence': 0.63},\n",
       "     {'color': 'brown', 'confidence': 0.46},\n",
       "     {'color': 'gray', 'confidence': 0.39},\n",
       "     {'color': 'blond', 'confidence': 0.03},\n",
       "     {'color': 'red', 'confidence': 0.01},\n",
       "     {'color': 'white', 'confidence': 0.0}]}}},\n",
       " {'faceId': '5e17a0f5-0a18-4a83-821a-31dd3fd014cd',\n",
       "  'faceRectangle': {'top': 41, 'left': 676, 'width': 52, 'height': 52},\n",
       "  'faceAttributes': {'smile': 1.0,\n",
       "   'headPose': {'pitch': 3.0, 'roll': -1.3, 'yaw': -0.6},\n",
       "   'gender': 'male',\n",
       "   'age': 25.0,\n",
       "   'facialHair': {'moustache': 0.1, 'beard': 0.1, 'sideburns': 0.1},\n",
       "   'glasses': 'ReadingGlasses',\n",
       "   'emotion': {'anger': 0.0,\n",
       "    'contempt': 0.0,\n",
       "    'disgust': 0.0,\n",
       "    'fear': 0.0,\n",
       "    'happiness': 1.0,\n",
       "    'neutral': 0.0,\n",
       "    'sadness': 0.0,\n",
       "    'surprise': 0.0},\n",
       "   'blur': {'blurLevel': 'low', 'value': 0.0},\n",
       "   'exposure': {'exposureLevel': 'goodExposure', 'value': 0.66},\n",
       "   'noise': {'noiseLevel': 'low', 'value': 0.07},\n",
       "   'makeup': {'eyeMakeup': False, 'lipMakeup': False},\n",
       "   'accessories': [{'type': 'glasses', 'confidence': 1.0}],\n",
       "   'occlusion': {'foreheadOccluded': False,\n",
       "    'eyeOccluded': False,\n",
       "    'mouthOccluded': False},\n",
       "   'hair': {'bald': 0.06,\n",
       "    'invisible': False,\n",
       "    'hairColor': [{'color': 'black', 'confidence': 0.98},\n",
       "     {'color': 'brown', 'confidence': 0.96},\n",
       "     {'color': 'other', 'confidence': 0.22},\n",
       "     {'color': 'gray', 'confidence': 0.21},\n",
       "     {'color': 'red', 'confidence': 0.09},\n",
       "     {'color': 'blond', 'confidence': 0.08},\n",
       "     {'color': 'white', 'confidence': 0.0}]}}},\n",
       " {'faceId': 'c9b6de20-4b5c-4a87-88ce-482b2049a45c',\n",
       "  'faceRectangle': {'top': 69, 'left': 445, 'width': 52, 'height': 52},\n",
       "  'faceAttributes': {'smile': 1.0,\n",
       "   'headPose': {'pitch': 0.2, 'roll': 2.6, 'yaw': 1.5},\n",
       "   'gender': 'female',\n",
       "   'age': 23.0,\n",
       "   'facialHair': {'moustache': 0.0, 'beard': 0.0, 'sideburns': 0.0},\n",
       "   'glasses': 'NoGlasses',\n",
       "   'emotion': {'anger': 0.0,\n",
       "    'contempt': 0.0,\n",
       "    'disgust': 0.0,\n",
       "    'fear': 0.0,\n",
       "    'happiness': 1.0,\n",
       "    'neutral': 0.0,\n",
       "    'sadness': 0.0,\n",
       "    'surprise': 0.0},\n",
       "   'blur': {'blurLevel': 'low', 'value': 0.0},\n",
       "   'exposure': {'exposureLevel': 'goodExposure', 'value': 0.56},\n",
       "   'noise': {'noiseLevel': 'medium', 'value': 0.33},\n",
       "   'makeup': {'eyeMakeup': False, 'lipMakeup': False},\n",
       "   'accessories': [],\n",
       "   'occlusion': {'foreheadOccluded': False,\n",
       "    'eyeOccluded': False,\n",
       "    'mouthOccluded': False},\n",
       "   'hair': {'bald': 0.11,\n",
       "    'invisible': False,\n",
       "    'hairColor': [{'color': 'black', 'confidence': 1.0},\n",
       "     {'color': 'brown', 'confidence': 0.81},\n",
       "     {'color': 'other', 'confidence': 0.41},\n",
       "     {'color': 'gray', 'confidence': 0.37},\n",
       "     {'color': 'blond', 'confidence': 0.03},\n",
       "     {'color': 'red', 'confidence': 0.02},\n",
       "     {'color': 'white', 'confidence': 0.0}]}}},\n",
       " {'faceId': 'c29e7a06-72de-4b77-bc5d-5568145f10eb',\n",
       "  'faceRectangle': {'top': 95, 'left': 238, 'width': 51, 'height': 51},\n",
       "  'faceAttributes': {'smile': 0.981,\n",
       "   'headPose': {'pitch': 7.2, 'roll': 1.2, 'yaw': 2.6},\n",
       "   'gender': 'female',\n",
       "   'age': 18.0,\n",
       "   'facialHair': {'moustache': 0.0, 'beard': 0.0, 'sideburns': 0.0},\n",
       "   'glasses': 'ReadingGlasses',\n",
       "   'emotion': {'anger': 0.0,\n",
       "    'contempt': 0.0,\n",
       "    'disgust': 0.0,\n",
       "    'fear': 0.0,\n",
       "    'happiness': 0.981,\n",
       "    'neutral': 0.019,\n",
       "    'sadness': 0.0,\n",
       "    'surprise': 0.0},\n",
       "   'blur': {'blurLevel': 'low', 'value': 0.07},\n",
       "   'exposure': {'exposureLevel': 'goodExposure', 'value': 0.69},\n",
       "   'noise': {'noiseLevel': 'medium', 'value': 0.48},\n",
       "   'makeup': {'eyeMakeup': False, 'lipMakeup': False},\n",
       "   'accessories': [{'type': 'glasses', 'confidence': 1.0}],\n",
       "   'occlusion': {'foreheadOccluded': False,\n",
       "    'eyeOccluded': False,\n",
       "    'mouthOccluded': False},\n",
       "   'hair': {'bald': 0.11,\n",
       "    'invisible': False,\n",
       "    'hairColor': [{'color': 'black', 'confidence': 0.98},\n",
       "     {'color': 'brown', 'confidence': 0.86},\n",
       "     {'color': 'other', 'confidence': 0.4},\n",
       "     {'color': 'gray', 'confidence': 0.36},\n",
       "     {'color': 'blond', 'confidence': 0.09},\n",
       "     {'color': 'red', 'confidence': 0.08},\n",
       "     {'color': 'white', 'confidence': 0.0}]}}},\n",
       " {'faceId': '0192c19c-eb0a-447b-82f1-740f32eb004a',\n",
       "  'faceRectangle': {'top': 94, 'left': 540, 'width': 48, 'height': 48},\n",
       "  'faceAttributes': {'smile': 1.0,\n",
       "   'headPose': {'pitch': -7.7, 'roll': 5.0, 'yaw': 6.9},\n",
       "   'gender': 'female',\n",
       "   'age': 19.0,\n",
       "   'facialHair': {'moustache': 0.0, 'beard': 0.0, 'sideburns': 0.0},\n",
       "   'glasses': 'NoGlasses',\n",
       "   'emotion': {'anger': 0.0,\n",
       "    'contempt': 0.0,\n",
       "    'disgust': 0.0,\n",
       "    'fear': 0.0,\n",
       "    'happiness': 1.0,\n",
       "    'neutral': 0.0,\n",
       "    'sadness': 0.0,\n",
       "    'surprise': 0.0},\n",
       "   'blur': {'blurLevel': 'low', 'value': 0.08},\n",
       "   'exposure': {'exposureLevel': 'goodExposure', 'value': 0.65},\n",
       "   'noise': {'noiseLevel': 'low', 'value': 0.08},\n",
       "   'makeup': {'eyeMakeup': False, 'lipMakeup': False},\n",
       "   'accessories': [],\n",
       "   'occlusion': {'foreheadOccluded': False,\n",
       "    'eyeOccluded': False,\n",
       "    'mouthOccluded': False},\n",
       "   'hair': {'bald': 0.1,\n",
       "    'invisible': False,\n",
       "    'hairColor': [{'color': 'black', 'confidence': 1.0},\n",
       "     {'color': 'brown', 'confidence': 0.88},\n",
       "     {'color': 'other', 'confidence': 0.35},\n",
       "     {'color': 'gray', 'confidence': 0.33},\n",
       "     {'color': 'blond', 'confidence': 0.05},\n",
       "     {'color': 'red', 'confidence': 0.04},\n",
       "     {'color': 'white', 'confidence': 0.0}]}}}]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# A-2\n",
    "results = response.json()\n",
    "results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A-3 pandas 数据表格化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>faceId</th>\n",
       "      <th>faceRectangle.top</th>\n",
       "      <th>faceRectangle.left</th>\n",
       "      <th>faceRectangle.width</th>\n",
       "      <th>faceRectangle.height</th>\n",
       "      <th>faceAttributes.smile</th>\n",
       "      <th>faceAttributes.headPose.pitch</th>\n",
       "      <th>faceAttributes.headPose.roll</th>\n",
       "      <th>faceAttributes.headPose.yaw</th>\n",
       "      <th>faceAttributes.gender</th>\n",
       "      <th>...</th>\n",
       "      <th>faceAttributes.noise.value</th>\n",
       "      <th>faceAttributes.makeup.eyeMakeup</th>\n",
       "      <th>faceAttributes.makeup.lipMakeup</th>\n",
       "      <th>faceAttributes.accessories</th>\n",
       "      <th>faceAttributes.occlusion.foreheadOccluded</th>\n",
       "      <th>faceAttributes.occlusion.eyeOccluded</th>\n",
       "      <th>faceAttributes.occlusion.mouthOccluded</th>\n",
       "      <th>faceAttributes.hair.bald</th>\n",
       "      <th>faceAttributes.hair.invisible</th>\n",
       "      <th>faceAttributes.hair.hairColor</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1f2bf379-70dd-41be-86c3-a63f2deb7c7f</td>\n",
       "      <td>118</td>\n",
       "      <td>144</td>\n",
       "      <td>88</td>\n",
       "      <td>88</td>\n",
       "      <td>0.813</td>\n",
       "      <td>-3.4</td>\n",
       "      <td>1.4</td>\n",
       "      <td>9.4</td>\n",
       "      <td>male</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>[]</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.18</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'color': 'brown', 'confidence': 0.95}, {'col...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>f659ea05-a658-497d-9b2a-eb89e74d5403</td>\n",
       "      <td>117</td>\n",
       "      <td>376</td>\n",
       "      <td>64</td>\n",
       "      <td>64</td>\n",
       "      <td>0.456</td>\n",
       "      <td>-1.1</td>\n",
       "      <td>-0.2</td>\n",
       "      <td>6.6</td>\n",
       "      <td>female</td>\n",
       "      <td>...</td>\n",
       "      <td>0.01</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>[]</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.08</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'color': 'black', 'confidence': 1.0}, {'colo...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5e17a0f5-0a18-4a83-821a-31dd3fd014cd</td>\n",
       "      <td>41</td>\n",
       "      <td>676</td>\n",
       "      <td>52</td>\n",
       "      <td>52</td>\n",
       "      <td>1.000</td>\n",
       "      <td>3.0</td>\n",
       "      <td>-1.3</td>\n",
       "      <td>-0.6</td>\n",
       "      <td>male</td>\n",
       "      <td>...</td>\n",
       "      <td>0.07</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'type': 'glasses', 'confidence': 1.0}]</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.06</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'color': 'black', 'confidence': 0.98}, {'col...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>c9b6de20-4b5c-4a87-88ce-482b2049a45c</td>\n",
       "      <td>69</td>\n",
       "      <td>445</td>\n",
       "      <td>52</td>\n",
       "      <td>52</td>\n",
       "      <td>1.000</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.6</td>\n",
       "      <td>1.5</td>\n",
       "      <td>female</td>\n",
       "      <td>...</td>\n",
       "      <td>0.33</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>[]</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.11</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'color': 'black', 'confidence': 1.0}, {'colo...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>c29e7a06-72de-4b77-bc5d-5568145f10eb</td>\n",
       "      <td>95</td>\n",
       "      <td>238</td>\n",
       "      <td>51</td>\n",
       "      <td>51</td>\n",
       "      <td>0.981</td>\n",
       "      <td>7.2</td>\n",
       "      <td>1.2</td>\n",
       "      <td>2.6</td>\n",
       "      <td>female</td>\n",
       "      <td>...</td>\n",
       "      <td>0.48</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'type': 'glasses', 'confidence': 1.0}]</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.11</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'color': 'black', 'confidence': 0.98}, {'col...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0192c19c-eb0a-447b-82f1-740f32eb004a</td>\n",
       "      <td>94</td>\n",
       "      <td>540</td>\n",
       "      <td>48</td>\n",
       "      <td>48</td>\n",
       "      <td>1.000</td>\n",
       "      <td>-7.7</td>\n",
       "      <td>5.0</td>\n",
       "      <td>6.9</td>\n",
       "      <td>female</td>\n",
       "      <td>...</td>\n",
       "      <td>0.08</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>[]</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>0.10</td>\n",
       "      <td>False</td>\n",
       "      <td>[{'color': 'black', 'confidence': 1.0}, {'colo...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 faceId  faceRectangle.top  \\\n",
       "0  1f2bf379-70dd-41be-86c3-a63f2deb7c7f                118   \n",
       "1  f659ea05-a658-497d-9b2a-eb89e74d5403                117   \n",
       "2  5e17a0f5-0a18-4a83-821a-31dd3fd014cd                 41   \n",
       "3  c9b6de20-4b5c-4a87-88ce-482b2049a45c                 69   \n",
       "4  c29e7a06-72de-4b77-bc5d-5568145f10eb                 95   \n",
       "5  0192c19c-eb0a-447b-82f1-740f32eb004a                 94   \n",
       "\n",
       "   faceRectangle.left  faceRectangle.width  faceRectangle.height  \\\n",
       "0                 144                   88                    88   \n",
       "1                 376                   64                    64   \n",
       "2                 676                   52                    52   \n",
       "3                 445                   52                    52   \n",
       "4                 238                   51                    51   \n",
       "5                 540                   48                    48   \n",
       "\n",
       "   faceAttributes.smile  faceAttributes.headPose.pitch  \\\n",
       "0                 0.813                           -3.4   \n",
       "1                 0.456                           -1.1   \n",
       "2                 1.000                            3.0   \n",
       "3                 1.000                            0.2   \n",
       "4                 0.981                            7.2   \n",
       "5                 1.000                           -7.7   \n",
       "\n",
       "   faceAttributes.headPose.roll  faceAttributes.headPose.yaw  \\\n",
       "0                           1.4                          9.4   \n",
       "1                          -0.2                          6.6   \n",
       "2                          -1.3                         -0.6   \n",
       "3                           2.6                          1.5   \n",
       "4                           1.2                          2.6   \n",
       "5                           5.0                          6.9   \n",
       "\n",
       "  faceAttributes.gender  ...  faceAttributes.noise.value  \\\n",
       "0                  male  ...                        0.01   \n",
       "1                female  ...                        0.01   \n",
       "2                  male  ...                        0.07   \n",
       "3                female  ...                        0.33   \n",
       "4                female  ...                        0.48   \n",
       "5                female  ...                        0.08   \n",
       "\n",
       "   faceAttributes.makeup.eyeMakeup  faceAttributes.makeup.lipMakeup  \\\n",
       "0                            False                            False   \n",
       "1                            False                             True   \n",
       "2                            False                            False   \n",
       "3                            False                            False   \n",
       "4                            False                            False   \n",
       "5                            False                            False   \n",
       "\n",
       "                 faceAttributes.accessories  \\\n",
       "0                                        []   \n",
       "1                                        []   \n",
       "2  [{'type': 'glasses', 'confidence': 1.0}]   \n",
       "3                                        []   \n",
       "4  [{'type': 'glasses', 'confidence': 1.0}]   \n",
       "5                                        []   \n",
       "\n",
       "  faceAttributes.occlusion.foreheadOccluded  \\\n",
       "0                                     False   \n",
       "1                                     False   \n",
       "2                                     False   \n",
       "3                                     False   \n",
       "4                                     False   \n",
       "5                                     False   \n",
       "\n",
       "   faceAttributes.occlusion.eyeOccluded  \\\n",
       "0                                 False   \n",
       "1                                 False   \n",
       "2                                 False   \n",
       "3                                 False   \n",
       "4                                 False   \n",
       "5                                 False   \n",
       "\n",
       "   faceAttributes.occlusion.mouthOccluded  faceAttributes.hair.bald  \\\n",
       "0                                   False                      0.18   \n",
       "1                                   False                      0.08   \n",
       "2                                   False                      0.06   \n",
       "3                                   False                      0.11   \n",
       "4                                   False                      0.11   \n",
       "5                                   False                      0.10   \n",
       "\n",
       "   faceAttributes.hair.invisible  \\\n",
       "0                          False   \n",
       "1                          False   \n",
       "2                          False   \n",
       "3                          False   \n",
       "4                          False   \n",
       "5                          False   \n",
       "\n",
       "                       faceAttributes.hair.hairColor  \n",
       "0  [{'color': 'brown', 'confidence': 0.95}, {'col...  \n",
       "1  [{'color': 'black', 'confidence': 1.0}, {'colo...  \n",
       "2  [{'color': 'black', 'confidence': 0.98}, {'col...  \n",
       "3  [{'color': 'black', 'confidence': 1.0}, {'colo...  \n",
       "4  [{'color': 'black', 'confidence': 0.98}, {'col...  \n",
       "5  [{'color': 'black', 'confidence': 1.0}, {'colo...  \n",
       "\n",
       "[6 rows x 38 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# A-3\n",
    "import pandas as pd\n",
    "df_face = pd.json_normalize(results)\n",
    "df_face"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## A-4 数据取值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['1f2bf379-70dd-41be-86c3-a63f2deb7c7f',\n",
       " 'f659ea05-a658-497d-9b2a-eb89e74d5403',\n",
       " '5e17a0f5-0a18-4a83-821a-31dd3fd014cd',\n",
       " 'c9b6de20-4b5c-4a87-88ce-482b2049a45c',\n",
       " 'c29e7a06-72de-4b77-bc5d-5568145f10eb',\n",
       " '0192c19c-eb0a-447b-82f1-740f32eb004a']"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "faceID = df_face['faceId'].values.tolist()\n",
    "faceID "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['faceId', 'faceRectangle.top', 'faceRectangle.left',\n",
       "       'faceRectangle.width', 'faceRectangle.height', 'faceAttributes.smile',\n",
       "       'faceAttributes.headPose.pitch', 'faceAttributes.headPose.roll',\n",
       "       'faceAttributes.headPose.yaw', 'faceAttributes.gender',\n",
       "       'faceAttributes.age', 'faceAttributes.facialHair.moustache',\n",
       "       'faceAttributes.facialHair.beard',\n",
       "       'faceAttributes.facialHair.sideburns', 'faceAttributes.glasses',\n",
       "       'faceAttributes.emotion.anger', 'faceAttributes.emotion.contempt',\n",
       "       'faceAttributes.emotion.disgust', 'faceAttributes.emotion.fear',\n",
       "       'faceAttributes.emotion.happiness', 'faceAttributes.emotion.neutral',\n",
       "       'faceAttributes.emotion.sadness', 'faceAttributes.emotion.surprise',\n",
       "       'faceAttributes.blur.blurLevel', 'faceAttributes.blur.value',\n",
       "       'faceAttributes.exposure.exposureLevel',\n",
       "       'faceAttributes.exposure.value', 'faceAttributes.noise.noiseLevel',\n",
       "       'faceAttributes.noise.value', 'faceAttributes.makeup.eyeMakeup',\n",
       "       'faceAttributes.makeup.lipMakeup', 'faceAttributes.accessories',\n",
       "       'faceAttributes.occlusion.foreheadOccluded',\n",
       "       'faceAttributes.occlusion.eyeOccluded',\n",
       "       'faceAttributes.occlusion.mouthOccluded', 'faceAttributes.hair.bald',\n",
       "       'faceAttributes.hair.invisible', 'faceAttributes.hair.hairColor'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 检查属性/特征值\n",
    "df_face.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>faceId</th>\n",
       "      <th>faceAttributes.glasses</th>\n",
       "      <th>faceAttributes.emotion.neutral</th>\n",
       "      <th>faceAttributes.age</th>\n",
       "      <th>faceAttributes.gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1f2bf379-70dd-41be-86c3-a63f2deb7c7f</td>\n",
       "      <td>NoGlasses</td>\n",
       "      <td>0.184</td>\n",
       "      <td>19.0</td>\n",
       "      <td>male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>f659ea05-a658-497d-9b2a-eb89e74d5403</td>\n",
       "      <td>NoGlasses</td>\n",
       "      <td>0.542</td>\n",
       "      <td>22.0</td>\n",
       "      <td>female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5e17a0f5-0a18-4a83-821a-31dd3fd014cd</td>\n",
       "      <td>ReadingGlasses</td>\n",
       "      <td>0.000</td>\n",
       "      <td>25.0</td>\n",
       "      <td>male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>c9b6de20-4b5c-4a87-88ce-482b2049a45c</td>\n",
       "      <td>NoGlasses</td>\n",
       "      <td>0.000</td>\n",
       "      <td>23.0</td>\n",
       "      <td>female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>c29e7a06-72de-4b77-bc5d-5568145f10eb</td>\n",
       "      <td>ReadingGlasses</td>\n",
       "      <td>0.019</td>\n",
       "      <td>18.0</td>\n",
       "      <td>female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0192c19c-eb0a-447b-82f1-740f32eb004a</td>\n",
       "      <td>NoGlasses</td>\n",
       "      <td>0.000</td>\n",
       "      <td>19.0</td>\n",
       "      <td>female</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                 faceId faceAttributes.glasses  \\\n",
       "0  1f2bf379-70dd-41be-86c3-a63f2deb7c7f              NoGlasses   \n",
       "1  f659ea05-a658-497d-9b2a-eb89e74d5403              NoGlasses   \n",
       "2  5e17a0f5-0a18-4a83-821a-31dd3fd014cd         ReadingGlasses   \n",
       "3  c9b6de20-4b5c-4a87-88ce-482b2049a45c              NoGlasses   \n",
       "4  c29e7a06-72de-4b77-bc5d-5568145f10eb         ReadingGlasses   \n",
       "5  0192c19c-eb0a-447b-82f1-740f32eb004a              NoGlasses   \n",
       "\n",
       "   faceAttributes.emotion.neutral  faceAttributes.age faceAttributes.gender  \n",
       "0                           0.184                19.0                  male  \n",
       "1                           0.542                22.0                female  \n",
       "2                           0.000                25.0                  male  \n",
       "3                           0.000                23.0                female  \n",
       "4                           0.019                18.0                female  \n",
       "5                           0.000                19.0                female  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 可观察其中几组数据\n",
    "df_face[['faceId','faceAttributes.glasses','faceAttributes.emotion.neutral','faceAttributes.age','faceAttributes.gender']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Azure 认知服务-人脸演示"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 试一试：人脸验证(难)\n",
    "\n",
    "人脸相似度？有没有试下？\n",
    "\n",
    ">* API人脸文档中最重要的组成部分：\n",
    " >>* Request URL？\n",
    " >>* Http Method？\n",
    " >>* 参数？\n",
    "\n",
    "----\n",
    ">* 不同的人脸对比数据\n",
    "  >>* 人脸验证关键数据？\n",
    "  >>* 根据哪些数据证明是同一个人？\n",
    "    \n",
    "----\n",
    ">* 具体步骤：\n",
    "  >>* 1、Create 请求成功200 返回空字符串\n",
    "  >>* 2、Add face 请求成功200 返回persistedFaceId\n",
    "  >>* 3、Detect 准备 被检测人 人脸的id\n",
    "  >>* 4、Find similars 返回相似置信度\n",
    "  >>* 附加：get查看facelists\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "https://api-hjq.cognitiveservices.azure.com/face/v1.0/facelists/zhichao02 \n",
      " https://api-hjq.cognitiveservices.azure.com/face/v1.0/facelists/zhichao02 \n",
      " https://api-hjq.cognitiveservices.azure.com/face/v1.0/facelists/zhichao02\n"
     ]
    }
   ],
   "source": [
    "# 字符串拼接练习\n",
    "faceListId = \"zhichao02\"\n",
    "# 1\n",
    "url_01 = \"https://api-hjq.cognitiveservices.azure.com/face/v1.0/facelists/\" + faceListId # string 拼接\n",
    "# 2\n",
    "url_02 = \"https://api-hjq.cognitiveservices.azure.com/face/v1.0/facelists/%s\" %(faceListId)\n",
    "# 3 \n",
    "url_03 = \"https://api-hjq.cognitiveservices.azure.com/face/v1.0/facelists/{}\".format(faceListId)\n",
    "print(url_01,'\\n',url_02,'\\n',url_03)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### create facelist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "# 1、create  list列表\n",
    "# faceListId\n",
    "faceListId = \"fyw\" # 学生填写设置人脸列表ID\n",
    "create_facelists_url = 'https://api-fyw.cognitiveservices.azure.com/face/v1.0/facelists/{}' # 学生填写 ☆ 注意此条url修改\n",
    "subscription_key = '5ce56ac521754c5f89854d7234de2e15'\n",
    "assert subscription_key\n",
    "\n",
    "headers = {\n",
    "    # Request headers\n",
    "    'Content-Type': 'application/json',\n",
    "    'Ocp-Apim-Subscription-Key': subscription_key\n",
    "}\n",
    "data = {\n",
    "    \"name\": \"pictures\",\n",
    "    \"userData\": \"照片\",\n",
    "    \"recognitionModel\": \"recognition_03\",\n",
    "    \n",
    "}\n",
    "\n",
    "r_create = requests.put(create_facelists_url.format(faceListId),headers=headers,json=data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_create"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b''"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_create.content"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### get facelist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 检查你的facelist的信息\n",
    "get_facelist_url = # 学生填写\n",
    "r_get_facelist = requests.get(get_facelist_url,headers=headers)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'persistedFaces': [],\n",
       " 'faceListId': 'zhichao07',\n",
       " 'name': '网新18级',\n",
       " 'userData': '20人，10男生，10女生'}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_get_facelist.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Add face 请求成功200 返回persistedFaceId\n",
    "> 我们通过上面的步骤建好了一个脸的列表，接下来我们要给这个列表添加脸了！把我们想要对比的脸存进列表吧\n",
    "- [添加人脸进列表api文档](https://docs.microsoft.com/zh-cn/rest/api/cognitiveservices/face/facelist/addfacefromurl)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "#先加一张脸试试\n",
    "# 2、Add face\n",
    "add_face_url =\"https://api-fyw.cognitiveservices.azure.com/face/v1.0/facelists/{}/persistedFaces\"\n",
    "subscription_key = '5ce56ac521754c5f89854d7234de2e15'\n",
    "\n",
    "assert subscription_key\n",
    "headers = {\n",
    "    # Request headers\n",
    "    'Content-Type': 'application/json',\n",
    "    'Ocp-Apim-Subscription-Key': subscription_key,\n",
    "}\n",
    "img_url =\"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1607580509,178125350&fm=26&gp=0.jpg\"\n",
    "params_add_face={\n",
    "    \"userData\":\"exo\"\n",
    "}\n",
    "\n",
    "r_add_face = requests.post(add_face_url.format(faceListId),headers=headers,params=params_add_face,json={\"url\":img_url})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "200"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_add_face.status_code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'persistedFaces': [{'persistedFaceId': '5081698a-efe4-4be9-822c-cb58f2cc4803',\n",
       "   'userData': '丘某峰'}],\n",
       " 'faceListId': 'zhichao07',\n",
       " 'name': '网新18级',\n",
       " 'userData': '20人，10男生，10女生'}"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 检查你的facelist的信息\n",
    "get_facelist_url = \n",
    "r_get_facelist = requests.get(get_facelist_url,headers=headers)\n",
    "r_get_facelist.json()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 扩展内容，封装成函数方便多次使用 *\n",
    "> 我们要添加多张脸，但是为了减少代码量，我们可以把代码封装成函数，避免每次都要写一大堆代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 封装成函数方便添加图片/函数——可以重复使用相同的功能\n",
    "def AddFace(img_url=str,userData=str):\n",
    "    add_face_url =\"https://api-fyw.cognitiveservices.azure.com/face/v1.0/facelists/{}/persistedFaces\"\n",
    "    assert subscription_key\n",
    "    headers = {\n",
    "        # Request headers\n",
    "        'Content-Type': 'application/json',\n",
    "        'Ocp-Apim-Subscription-Key': subscription_key,\n",
    "    }\n",
    "    img_url = img_url\n",
    "\n",
    "    params_add_face={\n",
    "        \"userData\":userData\n",
    "    }\n",
    "    r_add_face = requests.post(add_face_url.format(faceListId),headers=headers,params=params_add_face,json={\"url\":img_url})\n",
    "    return r_add_face.status_code#返回出状态码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "200"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "AddFace(\"https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3788808027,1864953214&fm=26&gp=0.jpg\",\"赵露思\")\n",
    "AddFace(\"https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3746471952,847846521&fm=26&gp=0.jpg\",\"吴亦凡\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'persistedFaces': [{'persistedFaceId': '43e96248-9c56-4fc0-8a5d-25ea03b87b86',\n",
       "   'userData': '赵露思'},\n",
       "  {'persistedFaceId': 'd743e152-0dd8-4b72-b885-12d944e6e25e',\n",
       "   'userData': '吴亦凡'}],\n",
       " 'faceListId': 'fyw',\n",
       " 'name': 'pictures',\n",
       " 'userData': '照片'}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 检查你的facelist的信息\n",
    "get_facelist_url = \"https://api-fyw.cognitiveservices.azure.com/face/v1.0/facelists/{}\"\n",
    "r_get_facelist = requests.get(get_facelist_url.format(faceListId),headers=headers)\n",
    "r_get_facelist.json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'df_face' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-13-a74b3d13a07b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mfaceID\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdf_face\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'faceId'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      2\u001b[0m \u001b[0mfaceID\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'df_face' is not defined"
     ]
    }
   ],
   "source": [
    "faceID = df_face['faceId'].values.tolist()\n",
    "faceID "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'faceID' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-12-53f6d88ea75c>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;31m# 键/值\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mfaceID\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      3\u001b[0m \u001b[1;31m#     print(i)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[1;32mif\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"userData\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"赵露思\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m         \u001b[0mfaceId_02\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'persistedFaceId'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'faceID' is not defined"
     ]
    }
   ],
   "source": [
    "# 键/值\n",
    "for i in faceID:\n",
    "#     print(i)\n",
    "    if i[\"userData\"] == \"赵露思\":\n",
    "        faceId_02 = i['persistedFaceId']\n",
    "faceId_02\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'persistedFaceId': '5081698a-efe4-4be9-822c-cb58f2cc4803',\n",
       "  'userData': '丘某峰'},\n",
       " {'persistedFaceId': '8cfa1b6d-b087-4cd2-be8c-55582168b497',\n",
       "  'userData': '丘天惠'},\n",
       " {'persistedFaceId': '8a559e64-a44b-4a4b-84dc-e14da959da3a',\n",
       "  'userData': '林嘉茵'},\n",
       " {'persistedFaceId': '7f5db725-735d-4b4f-a91b-42ac215b5aa9',\n",
       "  'userData': '汤玲萍'},\n",
       " {'persistedFaceId': 'e386e027-8299-4703-a748-8ab7d060348c',\n",
       "  'userData': '曾雯燕'},\n",
       " {'persistedFaceId': '6d3cb16e-239d-495a-a3cc-b6f346b07034',\n",
       "  'userData': '谢依希'},\n",
       " {'persistedFaceId': '81ec76dd-163f-4ee3-aa16-11a0ce73295e',\n",
       "  'userData': '杨悦聪'},\n",
       " {'persistedFaceId': '6c940c74-645a-45c8-884d-6ab34ba352c2', 'userData': '周雨'},\n",
       " {'persistedFaceId': 'd8c64294-0629-4e81-87d5-3976ad54ac0e',\n",
       "  'userData': '刘瑜鹏'},\n",
       " {'persistedFaceId': 'c0ee4410-bca0-4a3f-acb5-74c8eb72f0a1',\n",
       "  'userData': '陈嘉仪'},\n",
       " {'persistedFaceId': '4278a690-5f78-40d7-abe5-88eab5d5494f',\n",
       "  'userData': '徐旖芊'},\n",
       " {'persistedFaceId': 'e61d920f-f131-464a-9a43-a82babf20358',\n",
       "  'userData': '刘心如'},\n",
       " {'persistedFaceId': 'a968313c-ab4e-42d0-9265-749dcf9b8529', 'userData': '刘宇'},\n",
       " {'persistedFaceId': '8b1c2538-05cc-4636-8460-cfa8059d5c72', 'userData': '李婷'},\n",
       " {'persistedFaceId': 'd0c25191-8224-410e-9eed-df3457e0a77f',\n",
       "  'userData': '黄智毅'},\n",
       " {'persistedFaceId': '454e8382-9ee5-4264-b97f-02ecbe5bd987',\n",
       "  'userData': '黄慧文'},\n",
       " {'persistedFaceId': '5bfad450-0274-40b5-ba9f-0e4a0af9763b',\n",
       "  'userData': '张铭睿'},\n",
       " {'persistedFaceId': 'a9c9451c-8627-4eed-b587-9410d5a61ff9', 'userData': '陈婷'},\n",
       " {'persistedFaceId': '6a663a8e-725c-4c7d-bd72-5520c4a2e93e',\n",
       "  'userData': '洪可凡'},\n",
       " {'persistedFaceId': '050bf519-7cdf-4b6a-8aac-52f475d282f8',\n",
       "  'userData': '卢继志'},\n",
       " {'persistedFaceId': '0523267b-6750-4d1e-987d-674e0ecb0821',\n",
       "  'userData': '张梓乐'}]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "faceId =  r_get_facelist.json()['persistedFaces']\n",
    "faceId"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "69103b48-b6c4-4f58-8ac1-4c8b84e56bc1\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'69103b48-b6c4-4f58-8ac1-4c8b84e56bc1'"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for item in faceId:\n",
    "#     print(item)\n",
    "    if item['userData'] == '黄智毅':\n",
    "        print(item['persistedFaceId'])\n",
    "        delate_face = item['persistedFaceId']\n",
    "delate_face"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### delate face"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Detect face 删除列表内人脸id\n",
    "faceListId = \"fyw\"\n",
    "delete_face_url = \"https://api-fyw.cognitiveservices.azure.com/face/v1.0/facelists/{}/persistedfaces/{}\"\n",
    "\n",
    "assert subscription_key\n",
    "# 例如：删除黄志毅： {'persistedFaceId': '69103b48-b6c4-4f58-8ac1-4c8b84e56bc1','userData': '黄智毅'},\n",
    "\n",
    "\n",
    "persistedFaceId = r_add_face.json()[\"persistedFaceId\"]\n",
    "# 直接取上面获得的ID{'persistedFaceId': 'f18450d3-60d2-45f3-a69e-783574dc3ce8'} \n",
    "\n",
    "headers = {\n",
    "    # Request headers\n",
    "    'Content-Type': 'application/json',\n",
    "    'Ocp-Apim-Subscription-Key': subscription_key,\n",
    "}\n",
    "\n",
    "# 注意requests请求为delete\n",
    "r_delete_face = requests.delete(delete_face_url.format(faceListId,persistedFaceId),headers=headers)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_delete_face"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'persistedFaces': [{'persistedFaceId': 'dbb1ee2f-7a47-4533-b1f4-b04ff25b3aa4',\n",
       "   'userData': '丘某峰'},\n",
       "  {'persistedFaceId': '057aed14-1033-4e52-b340-6d44c8e0b698',\n",
       "   'userData': '丘天惠'},\n",
       "  {'persistedFaceId': '2841fe7a-067b-4b3b-9f9f-8573bf03738f',\n",
       "   'userData': '林嘉茵'},\n",
       "  {'persistedFaceId': '8c489b85-4101-4239-a16e-910ecc93e4ca',\n",
       "   'userData': '汤玲萍'},\n",
       "  {'persistedFaceId': '7eed72ad-ad8c-49b0-9e3c-1e2f19c1f82e',\n",
       "   'userData': '曾雯燕'},\n",
       "  {'persistedFaceId': '7bcddf93-1bcc-4734-a87b-73d2b3e17b2b',\n",
       "   'userData': '谢依希'},\n",
       "  {'persistedFaceId': 'a0ba6f50-699d-4b0e-b12b-78664b90e4e3',\n",
       "   'userData': '杨悦聪'},\n",
       "  {'persistedFaceId': '23a4d101-69c3-4d31-9a03-bf7a85f9aad7',\n",
       "   'userData': '周雨'},\n",
       "  {'persistedFaceId': '5138f36e-0cf5-45c2-bd64-13573d65a118',\n",
       "   'userData': '刘瑜鹏'},\n",
       "  {'persistedFaceId': '033b5448-8c13-4e8d-b2df-0106088e181b',\n",
       "   'userData': '陈嘉仪'},\n",
       "  {'persistedFaceId': '819f9bf8-4efe-4374-ae23-bf0928514fcd',\n",
       "   'userData': '徐旖芊'},\n",
       "  {'persistedFaceId': '64289df3-2ea4-4beb-a638-9e2088b11d1a',\n",
       "   'userData': '刘心如'},\n",
       "  {'persistedFaceId': '2d73d2bb-42b9-4bfd-97cd-a26db504f41e',\n",
       "   'userData': '刘宇'},\n",
       "  {'persistedFaceId': 'cb7c10b6-699f-4940-885b-f01e8ed47e8a',\n",
       "   'userData': '李婷'},\n",
       "  {'persistedFaceId': 'cb430228-620e-4283-96ee-8df1bbd78e0f',\n",
       "   'userData': '黄慧文'},\n",
       "  {'persistedFaceId': '68c38ba1-ed3e-4bd5-9229-f10206bc111e',\n",
       "   'userData': '张铭睿'},\n",
       "  {'persistedFaceId': '711aaa90-acf0-422b-be1e-ee6ad49cd076',\n",
       "   'userData': '陈婷'},\n",
       "  {'persistedFaceId': '7114e51d-b25f-48ad-bf3f-cfc81a0c32c1',\n",
       "   'userData': '洪可凡'},\n",
       "  {'persistedFaceId': '9791b51b-b1db-4cc5-8074-c0cac4563c83',\n",
       "   'userData': '卢继志'},\n",
       "  {'persistedFaceId': 'a7eb090e-38ee-4f93-9cad-beff1f95ca0f',\n",
       "   'userData': '张梓乐'}],\n",
       " 'faceListId': 'zhichao06',\n",
       " 'name': 'api_facelist',\n",
       " 'userData': '相册集'}"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 检查你的facelist的信息\n",
    "get_facelist_url =\n",
    "r_get_facelist = requests.get(get_facelist_url,headers=headers)\n",
    "r_get_facelist.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Find similars 返回相似置信度\n",
    "- [监测人脸相似度api文档](https://docs.microsoft.com/zh-cn/rest/api/cognitiveservices/face/face/findsimilar)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'faceId': '322bb0f5-167e-47bb-848d-105f3c61e848',\n",
       "  'faceRectangle': {'top': 196, 'left': 168, 'width': 171, 'height': 171}}]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Detect 检测人脸的id\n",
    "# replace <My Endpoint String> with the string from your endpoint URL\n",
    "face_api_url = 'https://api-fyw.cognitiveservices.azure.com/face/v1.0/detect'\n",
    "\n",
    "# 请求正文\n",
    "image_url = 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2294747924,300082251&fm=26&gp=0.jpg'\n",
    "\n",
    "headers = {'Ocp-Apim-Subscription-Key': subscription_key}\n",
    "\n",
    "# 请求参数\n",
    "params = {\n",
    "    'returnFaceId': 'true',\n",
    "    'returnFaceLandmarks': 'false',\n",
    "    # 选择model\n",
    "    'recognitionModel':'recognition_03',#此参数需与facelist参数一致\n",
    "    'detectionModel':'detection_01',\n",
    "    # 可选参数,请仔细阅读API文档\n",
    "    'returnFaceAttributes': '',\n",
    "}\n",
    "\n",
    "response = requests.post(face_api_url, params=params,\n",
    "                         headers=headers, json={\"url\": image_url})\n",
    "# json.dumps 将json--->字符串\n",
    "response.json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "findsimilars_url = \"https://api-fyw.cognitiveservices.azure.com/face/v1.0/findsimilars\"\n",
    "\n",
    "# 请求正文 faceId需要先检测一张照片获取\n",
    "data_findsimilars = {\n",
    "    \"faceId\":\"322bb0f5-167e-47bb-848d-105f3c61e848\",#取上方的faceID\n",
    "    \"faceListId\": \"fyw\",\n",
    "#     \"faceIds\":faceId_02,\n",
    "    \"maxNumOfCandidatesReturned\": 10,\n",
    "    \"mode\": \"matchFace\"#matchPerson #一种为验证模式，一种为相似值模式\n",
    "    }\n",
    "\n",
    "r_findsimilars = requests.post(findsimilars_url,headers=headers,json=data_findsimilars)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_findsimilars"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'persistedFaceId': 'd743e152-0dd8-4b72-b885-12d944e6e25e',\n",
       "  'confidence': 0.76322},\n",
       " {'persistedFaceId': '43e96248-9c56-4fc0-8a5d-25ea03b87b86',\n",
       "  'confidence': 0.10734}]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r_findsimilars.json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'r_get_facelist' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-23-8f37fcdf4ddd>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;31m#facelist里面的数据\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mfaceListId_df\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjson_normalize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr_get_facelist\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjson\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"persistedFaces\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;31m# 升级pandas才能运行\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m \u001b[0mfaceListId_df\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mNameError\u001b[0m: name 'r_get_facelist' is not defined"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "#facelist里面的数据\n",
    "faceListId_df = pd.json_normalize(r_get_facelist.json()[\"persistedFaces\"])# 升级pandas才能运行\n",
    "faceListId_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>persistedFaceId</th>\n",
       "      <th>confidence</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4278a690-5f78-40d7-abe5-88eab5d5494f</td>\n",
       "      <td>0.29269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8b1c2538-05cc-4636-8460-cfa8059d5c72</td>\n",
       "      <td>0.20908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>5bfad450-0274-40b5-ba9f-0e4a0af9763b</td>\n",
       "      <td>0.17849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>c0ee4410-bca0-4a3f-acb5-74c8eb72f0a1</td>\n",
       "      <td>0.16209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>e61d920f-f131-464a-9a43-a82babf20358</td>\n",
       "      <td>0.15023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6a663a8e-725c-4c7d-bd72-5520c4a2e93e</td>\n",
       "      <td>0.10100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>8a559e64-a44b-4a4b-84dc-e14da959da3a</td>\n",
       "      <td>0.10034</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0523267b-6750-4d1e-987d-674e0ecb0821</td>\n",
       "      <td>0.09990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>5081698a-efe4-4be9-822c-cb58f2cc4803</td>\n",
       "      <td>0.09955</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>d0c25191-8224-410e-9eed-df3457e0a77f</td>\n",
       "      <td>0.09503</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        persistedFaceId  confidence\n",
       "0  4278a690-5f78-40d7-abe5-88eab5d5494f     0.29269\n",
       "1  8b1c2538-05cc-4636-8460-cfa8059d5c72     0.20908\n",
       "2  5bfad450-0274-40b5-ba9f-0e4a0af9763b     0.17849\n",
       "3  c0ee4410-bca0-4a3f-acb5-74c8eb72f0a1     0.16209\n",
       "4  e61d920f-f131-464a-9a43-a82babf20358     0.15023\n",
       "5  6a663a8e-725c-4c7d-bd72-5520c4a2e93e     0.10100\n",
       "6  8a559e64-a44b-4a4b-84dc-e14da959da3a     0.10034\n",
       "7  0523267b-6750-4d1e-987d-674e0ecb0821     0.09990\n",
       "8  5081698a-efe4-4be9-822c-cb58f2cc4803     0.09955\n",
       "9  d0c25191-8224-410e-9eed-df3457e0a77f     0.09503"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回相似度的数据\n",
    "find_df = pd.json_normalize(r_findsimilars.json())# 升级pandas才能运行\n",
    "find_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>persistedFaceId</th>\n",
       "      <th>userData</th>\n",
       "      <th>confidence</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4278a690-5f78-40d7-abe5-88eab5d5494f</td>\n",
       "      <td>徐旖芊</td>\n",
       "      <td>0.29269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>8b1c2538-05cc-4636-8460-cfa8059d5c72</td>\n",
       "      <td>李婷</td>\n",
       "      <td>0.20908</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>5bfad450-0274-40b5-ba9f-0e4a0af9763b</td>\n",
       "      <td>张铭睿</td>\n",
       "      <td>0.17849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>c0ee4410-bca0-4a3f-acb5-74c8eb72f0a1</td>\n",
       "      <td>陈嘉仪</td>\n",
       "      <td>0.16209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>e61d920f-f131-464a-9a43-a82babf20358</td>\n",
       "      <td>刘心如</td>\n",
       "      <td>0.15023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>6a663a8e-725c-4c7d-bd72-5520c4a2e93e</td>\n",
       "      <td>洪可凡</td>\n",
       "      <td>0.10100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>8a559e64-a44b-4a4b-84dc-e14da959da3a</td>\n",
       "      <td>林嘉茵</td>\n",
       "      <td>0.10034</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0523267b-6750-4d1e-987d-674e0ecb0821</td>\n",
       "      <td>张梓乐</td>\n",
       "      <td>0.09990</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5081698a-efe4-4be9-822c-cb58f2cc4803</td>\n",
       "      <td>丘某峰</td>\n",
       "      <td>0.09955</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>d0c25191-8224-410e-9eed-df3457e0a77f</td>\n",
       "      <td>黄智毅</td>\n",
       "      <td>0.09503</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                        persistedFaceId userData  confidence\n",
       "3  4278a690-5f78-40d7-abe5-88eab5d5494f      徐旖芊     0.29269\n",
       "5  8b1c2538-05cc-4636-8460-cfa8059d5c72       李婷     0.20908\n",
       "7  5bfad450-0274-40b5-ba9f-0e4a0af9763b      张铭睿     0.17849\n",
       "2  c0ee4410-bca0-4a3f-acb5-74c8eb72f0a1      陈嘉仪     0.16209\n",
       "4  e61d920f-f131-464a-9a43-a82babf20358      刘心如     0.15023\n",
       "8  6a663a8e-725c-4c7d-bd72-5520c4a2e93e      洪可凡     0.10100\n",
       "1  8a559e64-a44b-4a4b-84dc-e14da959da3a      林嘉茵     0.10034\n",
       "9  0523267b-6750-4d1e-987d-674e0ecb0821      张梓乐     0.09990\n",
       "0  5081698a-efe4-4be9-822c-cb58f2cc4803      丘某峰     0.09955\n",
       "6  d0c25191-8224-410e-9eed-df3457e0a77f      黄智毅     0.09503"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(faceListId_df, find_df,how='inner', on='persistedFaceId').sort_values(by=\"confidence\",ascending = False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 设计人脸识别门禁/打卡/签到 小程序"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Face++ FaceSets 实践\n",
    "\n",
    "\n",
    ">* 1. FaceSet Create\n",
    ">* 2. FaceSet GetDetail\n",
    ">* 3. FaceSet AddFace\n",
    ">* 4. FaceSet RemoveFace\n",
    ">* 5. FaceSet Update\n",
    ">* 6. Compare Face"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 准备工作"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "api_secret = 'VXWeLvwMNDU1Hocr_C5AYmkMLO-7Qr1L'\n",
    "api_key =  '8s1VsOP86E7Zc2ue7hDMQrpAfNbf62-E' # Replace with a valid Subscription Key here."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## FaceSet Create（创建人脸集合）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1. FaceSet Create\n",
    "import requests,json\n",
    "\n",
    "display_name = \"fyw\"\n",
    "outer_id = \"01\"\n",
    "user_data = \"照片库\"\n",
    "\n",
    "CreateFace_Url = \"https://api-cn.faceplusplus.com/facepp/v3/faceset/create\"\n",
    "payload = {\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'display_name':display_name,\n",
    "    'outer_id':outer_id,\n",
    "    'user_data':user_data\n",
    "}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(CreateFace_Url, params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '34f7ed47932bebda37d0f5b0caba436f',\n",
       " 'time_used': 159,\n",
       " 'face_count': 0,\n",
       " 'face_added': 0,\n",
       " 'request_id': '1603543830,c40bd9c7-a848-40da-bc8f-d00263b6ade8',\n",
       " 'outer_id': '01',\n",
       " 'failure_detail': []}"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## FaceSet GetDetail（获取人脸集合信息）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "GetDetail_Url = \"https://api-cn.faceplusplus.com/facepp/v3/faceset/getdetail\"\n",
    "\n",
    "payload = {\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'outer_id':outer_id,\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(GetDetail_Url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '34f7ed47932bebda37d0f5b0caba436f',\n",
       " 'tags': '',\n",
       " 'time_used': 116,\n",
       " 'user_data': '照片库',\n",
       " 'display_name': 'fyw',\n",
       " 'face_tokens': [],\n",
       " 'face_count': 0,\n",
       " 'request_id': '1603544030,9ea09596-4aaa-44f2-94b6-3c6dc62ca5cd',\n",
       " 'outer_id': '01'}"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## FaceSet AddFace（增加人脸信息）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "AddFace_url = \" https://api-cn.faceplusplus.com/facepp/v3/faceset/addface\"\n",
    "\n",
    "payload = {\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'faceset_token':'34f7ed47932bebda37d0f5b0caba436f',\n",
    "    'face_tokens':'fc40eef00db83fb91b228e4ccb301bc0',\n",
    "}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(AddFace_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '34f7ed47932bebda37d0f5b0caba436f',\n",
       " 'time_used': 477,\n",
       " 'face_count': 1,\n",
       " 'face_added': 1,\n",
       " 'request_id': '1603544466,20882ddc-a509-41f3-9c15-684bf1ceceb9',\n",
       " 'outer_id': '01',\n",
       " 'failure_detail': []}"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## FaceSet RemoveFace（移除人脸信息）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "RemoveFace_url = \" https://api-cn.faceplusplus.com/facepp/v3/faceset/removeface\"\n",
    "\n",
    "payload = {\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'faceset_token':'34f7ed47932bebda37d0f5b0caba436f',\n",
    "    'face_tokens':'fc40eef00db83fb91b228e4ccb301bc0',\n",
    "}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(RemoveFace_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '34f7ed47932bebda37d0f5b0caba436f',\n",
       " 'face_removed': 1,\n",
       " 'time_used': 191,\n",
       " 'face_count': 0,\n",
       " 'request_id': '1603544568,61919f8b-6894-4918-9386-016fefb03113',\n",
       " 'outer_id': '01',\n",
       " 'failure_detail': []}"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## FaceSet Update（更新人脸集合信息）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "Update_url = \"https://api-cn.faceplusplus.com/facepp/v3/faceset/update\"\n",
    "\n",
    "payload = {\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'faceset_token':'34f7ed47932bebda37d0f5b0caba436f',\n",
    "    'user_data':\"照片库\",\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(Update_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faceset_token': '34f7ed47932bebda37d0f5b0caba436f',\n",
       " 'request_id': '1603545045,2b1d5276-d7ee-4f4f-accf-905a27d14abd',\n",
       " 'time_used': 68,\n",
       " 'outer_id': '01'}"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Compare Face（对比人脸相似度）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "zhaolusi01 = \"https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4068031910,1066164139&fm=26&gp=0.jpg\"\n",
    "zhaolusi02 = \"https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1524479745,2326224732&fm=26&gp=0.jpg\"\n",
    "zhaobenshan = \"https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1684791184,2599670348&fm=26&gp=0.jpg\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 方案1:直接对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "Compare_url = \"https://api-cn.faceplusplus.com/facepp/v3/compare\"\n",
    "\n",
    "payload ={\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'image_url1':zhaolusi01,\n",
    "    'image_url2':zhaobenshan\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(Compare_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'faces1': [{'face_rectangle': {'width': 173,\n",
       "    'top': 128,\n",
       "    'left': 134,\n",
       "    'height': 173},\n",
       "   'face_token': 'fc40eef00db83fb91b228e4ccb301bc0'}],\n",
       " 'faces2': [{'face_rectangle': {'width': 173,\n",
       "    'top': 99,\n",
       "    'left': 101,\n",
       "    'height': 173},\n",
       "   'face_token': 'a961646f0cf94fce38f237c3f40a0633'}],\n",
       " 'time_used': 631,\n",
       " 'thresholds': {'1e-3': 62.327, '1e-5': 73.975, '1e-4': 69.101},\n",
       " 'confidence': 19.504,\n",
       " 'image_id2': '3gAWzb3rcfiScLBmQA32Xg==',\n",
       " 'image_id1': 'oXLm7XCKPUcXZBcpSCjZ+w==',\n",
       " 'request_id': '1603544427,20445917-d9ca-48ce-8c79-fdbe91f3a071'}"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 方案2:与人脸集合进行对比"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 面部检测(获取face_token)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "Detect_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' \n",
    "img_url = zhaolusi01\n",
    "\n",
    "payload = {\n",
    "    \"image_url\":img_url,\n",
    "    'api_key': api_key,\n",
    "    'api_secret': api_secret,\n",
    "    'return_attributes':'gender,age,smiling,emotion', \n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.post(Detect_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'request_id': '1603545980,524dcdf0-c996-4dfd-9d56-cca0f215a270',\n",
       " 'time_used': 171,\n",
       " 'faces': [{'face_token': '6040fdc2fdeb3dd887190d8036d2be6b',\n",
       "   'face_rectangle': {'top': 128, 'left': 134, 'width': 173, 'height': 173},\n",
       "   'attributes': {'gender': {'value': 'Female'},\n",
       "    'age': {'value': 20},\n",
       "    'smile': {'value': 0.058, 'threshold': 50.0},\n",
       "    'emotion': {'anger': 0.004,\n",
       "     'disgust': 0.004,\n",
       "     'fear': 0.004,\n",
       "     'happiness': 0.139,\n",
       "     'neutral': 99.652,\n",
       "     'sadness': 0.011,\n",
       "     'surprise': 0.186}}}],\n",
       " 'image_id': 'oXLm7XCKPUcXZBcpSCjZ+w==',\n",
       " 'face_num': 1}"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 加入人脸集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 人脸识别社会/政治使用思考\n",
    "> 人脸识别的 API比较\n",
    ">> * [Face Off: Confronting Bias in Face Recognition AI](https://www.kairos.com/blog/face-off-confronting-bias-in-face-recognition-ai)\n",
    ">> * [为什么世界现在需要道德的面部识别](https://www.kairos.com/blog/why-the-world-needs-ethical-facial-recognition-now)\n",
    "    * 到2023年，全球人脸识别市场的价值估计接近100亿美元，复合年增长率为16.8％。市场背后的主要增长动力是监视市场的发展以及生物识别技术领域的政府支出。但是，面部识别的使用在其他领域也有很大贡献，例如帮助企业打击消费者欺诈，满足动态法规遵从性以及提供可获利的客户体验。\n",
    "\n",
    "-----\n",
    "> 人脸识别的偏差及API 政治经济学 \n",
    ">> * [对抗：面对面部识别AI中的偏见](https://www.kairos.com/blog/face-off-confronting-bias-in-face-recognition-ai)\n",
    "    * 发生了什么？\n",
    "        * “编码注视”或算法偏差的研究: 浅肤色男性的错误率为0.8％ ?  深色皮肤女性的错误率高达34.7％  ? (Microsoft，IBM和Face ++)\n",
    "    * 用户的反应范围从惊奇和赞美到不悦和冒犯\n",
    "        * 我们承认目前提供的种族分类（黑人，白人，亚裔，西班牙裔，其他则不足以代表丰富多样，发展迅速的文化和种族挂毯\n",
    "    * 该怎么办？\n",
    "        * 改善数据\n",
    "        * 寻求持续的反馈    \n",
    "        \n",
    ">>  * [科技行业没有应对面部识别偏见的计划](https://www.theverge.com/2018/7/26/17616290/facial-recognition-ai-bias-benchmark-test) \n",
    ">>> 公司在做什么？(一些高科技大公司支持基准和法规)     \n",
    ">>> 我们如何解决偏见问题？    \n",
    ">>> 偏差不是唯一的问题\n",
    "\n",
    ">> * [面部识别尚未准备好给执法部门使用](https://techcrunch.com/2018/06/25/facial-recognition-software-is-not-ready-for-use-by-law-enforcement/)\n",
    " "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 计算机视觉\n",
    "\n",
    "* 学习并完成所有Azure computer version 的API调用\n",
    "> * 分析远程图像    \n",
    "> * 分析本地图片    \n",
    "> * 生成缩略图    \n",
    "> * 提取印刷体文本和手写文本    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分析远程图像"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"categories\": [{\"name\": \"people_young\", \"score\": 0.63671875, \"detail\": {\"celebrities\": []}}], \"color\": {\"dominantColorForeground\": \"Brown\", \"dominantColorBackground\": \"Brown\", \"dominantColors\": [\"Brown\"], \"accentColor\": \"933839\", \"isBwImg\": false, \"isBWImg\": false}, \"description\": {\"tags\": [\"clothing\", \"person\", \"woman\", \"hair\", \"wearing\", \"hat\", \"posing\", \"young\", \"camera\", \"sitting\", \"standing\", \"close\", \"girl\", \"brown\", \"smiling\", \"shirt\", \"large\", \"holding\", \"eyes\", \"bear\", \"stuffed\"], \"captions\": [{\"text\": \"a close up of a woman wearing a hat\", \"confidence\": 0.9258199310398469}]}, \"requestId\": \"ad5ec725-432e-4f9f-8b13-57e40049539d\", \"metadata\": {\"height\": 1711, \"width\": 1269, \"format\": \"Jpeg\"}}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import requests\n",
    "# If you are using a Jupyter notebook, uncomment the following line.\n",
    "# %matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import json\n",
    "from PIL import Image\n",
    "from io import BytesIO\n",
    "\n",
    "# Add your Computer Vision subscription key and endpoint to your environment variables.\n",
    "# if 'COMPUTER_VISION_SUBSCRIPTION_KEY' in os.environ:\n",
    "#     subscription_key = os.environ['COMPUTER_VISION_SUBSCRIPTION_KEY']\n",
    "# else:\n",
    "#     print(\"\\nSet the COMPUTER_VISION_SUBSCRIPTION_KEY environment variable.\\n**Restart your shell or IDE for changes to take effect.**\")\n",
    "#     sys.exit()\n",
    "\n",
    "endpoint = \"https://api222.cognitiveservices.azure.com/\"\n",
    "# if 'COMPUTER_VISION_ENDPOINT' in os.environ:\n",
    "#     endpoint = os.environ['COMPUTER_VISION_ENDPOINT']\n",
    "subscription_key = \"2e75e85752f04778b612af71ea4c8260\"\n",
    "\n",
    "# base url\n",
    "analyze_url = endpoint+ \"vision/v2.1/analyze\"\n",
    "\n",
    "# Set image_url to the URL of an image that you want to analyze.\n",
    "image_url = \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1603554415272&di=4d414e1e1403a8239abd96d8fbfafd12&imgtype=0&src=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0310%2Fc63836a2j00q6z2bw00acc000z901bjm.jpg\"\n",
    "\n",
    "headers = {'Ocp-Apim-Subscription-Key': subscription_key}\n",
    "# 参数\n",
    "params = {'visualFeatures': 'Categories,Description,Color'}\n",
    "# 请求主体body\n",
    "data = {'url': image_url}\n",
    "response = requests.post(analyze_url, headers=headers,\n",
    "                         params=params, json=data)\n",
    "response.raise_for_status()\n",
    "\n",
    "# The 'analysis' object contains various fields that describe the image. The most\n",
    "# relevant caption for the image is obtained from the 'description' property.\n",
    "analysis = response.json()\n",
    "print(json.dumps(response.json()))\n",
    "image_caption = analysis[\"description\"][\"captions\"][0][\"text\"].capitalize()\n",
    "\n",
    "# Display the image and overlay it with the caption.\n",
    "image = Image.open(BytesIO(requests.get(image_url).content))\n",
    "plt.imshow(image)\n",
    "plt.axis(\"off\")\n",
    "_ = plt.title(image_caption, size=\"x-large\", y=-0.1)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分析本地图片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "ename": "FileNotFoundError",
     "evalue": "[Errno 2] No such file or directory: 'zhaolusi.jpg'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mFileNotFoundError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-2-9f2e9f9b6e20>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m     23\u001b[0m \u001b[0mimage_path\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"zhaolusi.jpg\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     24\u001b[0m \u001b[1;31m# Read the image into a byte array\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 25\u001b[1;33m \u001b[0mimage_data\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mimage_path\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"rb\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     26\u001b[0m headers = {'Ocp-Apim-Subscription-Key': \"dd748cf10bf9404399e5416d9399e218\",\n\u001b[0;32m     27\u001b[0m            'Content-Type': 'application/octet-stream'}\n",
      "\u001b[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'zhaolusi.jpg'"
     ]
    }
   ],
   "source": [
    "import os\n",
    "import sys\n",
    "import requests\n",
    "# If you are using a Jupyter notebook, uncomment the following line.\n",
    "# %matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "from PIL import Image\n",
    "from io import BytesIO\n",
    "\n",
    "# Add your Computer Vision subscription key and endpoint to your environment variables.\n",
    "# if 'COMPUTER_VISION_SUBSCRIPTION_KEY' in os.environ:\n",
    "#     subscription_key = os.environ['COMPUTER_VISION_SUBSCRIPTION_KEY']\n",
    "# else:\n",
    "#     print(\"\\nSet the COMPUTER_VISION_SUBSCRIPTION_KEY environment variable.\\n**Restart your shell or IDE for changes to take effect.**\")\n",
    "#     sys.exit()\n",
    "\n",
    "# if 'COMPUTER_VISION_ENDPOINT' in os.environ:\n",
    "#     endpoint = os.environ['COMPUTER_VISION_ENDPOINT']\n",
    "\n",
    "# analyze_url = endpoint + \"vision/v2.1/analyze\"\n",
    "\n",
    "# Set image_path to the local path of an image that you want to analyze.\n",
    "image_path = \"zhaolusi.jpg\"\n",
    "# Read the image into a byte array\n",
    "image_data = open(image_path, \"rb\").read()\n",
    "headers = {'Ocp-Apim-Subscription-Key': \"dd748cf10bf9404399e5416d9399e218\",\n",
    "           'Content-Type': 'application/octet-stream'}\n",
    "params = {'visualFeatures': 'Categories,Description,Color'}\n",
    "response = requests.post(\n",
    "    analyze_url, headers=headers, params=params, data=image_data)\n",
    "response.raise_for_status()\n",
    "\n",
    "# The 'analysis' object contains various fields that describe the image. The most\n",
    "# relevant caption for the image is obtained from the 'description' property.\n",
    "analysis = response.json()\n",
    "print(analysis)\n",
    "image_caption = analysis[\"description\"][\"captions\"][0][\"text\"].capitalize()\n",
    "\n",
    "# Display the image and overlay it with the caption.\n",
    "image = Image.open(BytesIO(image_data))\n",
    "plt.imshow(image)\n",
    "plt.axis(\"off\")\n",
    "_ = plt.title(image_caption, size=\"x-large\", y=-0.1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成缩略图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "import requests\n",
    "# If you are using a Jupyter notebook, uncomment the following line.\n",
    "# %matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "from PIL import Image\n",
    "from io import BytesIO\n",
    "\n",
    "# Add your Computer Vision subscription key and endpoint to your environment variables.\n",
    "# if 'COMPUTER_VISION_SUBSCRIPTION_KEY' in os.environ:\n",
    "#     subscription_key = os.environ['COMPUTER_VISION_SUBSCRIPTION_KEY']\n",
    "# else:\n",
    "#     print(\"\\nSet the COMPUTER_VISION_SUBSCRIPTION_KEY environment variable.\\n**Restart your shell or IDE for changes to take effect.**\")\n",
    "#     sys.exit()\n",
    "\n",
    "# if 'COMPUTER_VISION_ENDPOINT' in os.environ:\n",
    "#     endpoint = os.environ['COMPUTER_VISION_ENDPOINT']\n",
    "\n",
    "thumbnail_url = \"https://api222.cognitiveservices.azure.com/\" + \"vision/v2.1/generateThumbnail\"\n",
    "\n",
    "# Set image_url to the URL of an image that you want to analyze.\n",
    "image_url = \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1603558008105&di=e6634d8b03c2a988dae69a52795a131d&imgtype=0&src=http%3A%2F%2Fimgsa.baidu.com%2Fbaike%2Fpic%2Fitem%2F267f9e2f07082838da47ac79b799a9014c08f111.jpg\"\n",
    "\n",
    "headers = {'Ocp-Apim-Subscription-Key': \"dd748cf10bf9404399e5416d9399e218\"}\n",
    "params = {'width': '100', 'height': '100', 'smartCropping': 'true'}\n",
    "data = {'url': image_url}\n",
    "response = requests.post(thumbnail_url, headers=headers,\n",
    "                         params=params, json=data)\n",
    "response.raise_for_status()\n",
    "\n",
    "thumbnail = Image.open(BytesIO(response.content))\n",
    "\n",
    "# Display the thumbnail.\n",
    "plt.imshow(thumbnail)\n",
    "plt.axis(\"off\")\n",
    "\n",
    "# Verify the thumbnail size.\n",
    "print(\"Thumbnail is {0}-by-{1}\".format(*thumbnail.size))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 提取印刷体文本和手写文本 \n",
    "* 假如我们抓取了1000张网页，出了文本信息我们分析以外，还有每个页面的图片的信息，我们可以用提取图片文本的方式，将图片的信息也抓取下来\n",
    "* 我们进抓取了图片，想知道这些图片的内容是什么，也可以用提取文本的方式进行提取\n",
    "* ...."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "    \"status\": \"running\",\n",
      "    \"createdDateTime\": \"2020-10-24T15:03:51Z\",\n",
      "    \"lastUpdatedDateTime\": \"2020-10-24T15:03:51Z\"\n",
      "}\n",
      "{\n",
      "    \"status\": \"succeeded\",\n",
      "    \"createdDateTime\": \"2020-10-24T15:03:51Z\",\n",
      "    \"lastUpdatedDateTime\": \"2020-10-24T15:03:52Z\",\n",
      "    \"analyzeResult\": {\n",
      "        \"version\": \"3.0.0\",\n",
      "        \"readResults\": [\n",
      "            {\n",
      "                \"page\": 1,\n",
      "                \"angle\": 0,\n",
      "                \"width\": 540,\n",
      "                \"height\": 810,\n",
      "                \"unit\": \"pixel\",\n",
      "                \"lines\": []\n",
      "            }\n",
      "        ]\n",
      "    }\n",
      "}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import json\n",
    "import os\n",
    "import sys\n",
    "import requests\n",
    "import time\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.patches import Polygon\n",
    "from PIL import Image\n",
    "from io import BytesIO\n",
    "\n",
    "text_recognition_url = endpoint + \"/vision/v3.0/read/analyze\"\n",
    "\n",
    "# Set image_url to the URL of an image that you want to recognize.\n",
    "image_url = \"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1603557902530&di=626f7c444a4f3a3cde7a57f0e2a194d8&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201806%2F07%2F20180607131558_iqbhg.thumb.700_0.jpg\"\n",
    "\n",
    "headers = {'Ocp-Apim-Subscription-Key': \"8e90f24d51534c1080d5d92f72aaa6c2\"}\n",
    "data = {'url': image_url}\n",
    "response = requests.post(text_recognition_url, headers=headers, json=data)\n",
    "response.raise_for_status()\n",
    "\n",
    "# Extracting text requires two API calls: One call to submit the\n",
    "# image for processing, the other to retrieve the text found in the image.\n",
    "\n",
    "# Holds the URI used to retrieve the recognized text.\n",
    "operation_url = response.headers[\"Operation-Location\"]\n",
    "\n",
    "# The recognized text isn't immediately available, so poll to wait for completion.\n",
    "analysis = {}\n",
    "poll = True\n",
    "while (poll):\n",
    "    response_final = requests.get(\n",
    "        response.headers[\"Operation-Location\"], headers=headers)\n",
    "    analysis = response_final.json()\n",
    "    \n",
    "    print(json.dumps(analysis, indent=4))\n",
    "\n",
    "    time.sleep(1)\n",
    "    if (\"analyzeResult\" in analysis):\n",
    "        poll = False\n",
    "    if (\"status\" in analysis and analysis['status'] == 'failed'):\n",
    "        poll = False\n",
    "\n",
    "polygons = []\n",
    "if (\"analyzeResult\" in analysis):\n",
    "    # Extract the recognized text, with bounding boxes.\n",
    "    polygons = [(line[\"boundingBox\"], line[\"text\"])\n",
    "                for line in analysis[\"analyzeResult\"][\"readResults\"][0][\"lines\"]]\n",
    "\n",
    "# Display the image and overlay it with the extracted text.\n",
    "image = Image.open(BytesIO(requests.get(image_url).content))\n",
    "ax = plt.imshow(image)\n",
    "for polygon in polygons:\n",
    "    vertices = [(polygon[0][i], polygon[0][i+1])\n",
    "                for i in range(0, len(polygon[0]), 2)]\n",
    "    text = polygon[1]\n",
    "    patch = Polygon(vertices, closed=True, fill=False, linewidth=2, color='y')\n",
    "    ax.axes.add_patch(patch)\n",
    "    plt.text(vertices[0][0], vertices[0][1], text, fontsize=20, va=\"top\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'status': 'succeeded',\n",
       " 'createdDateTime': '2020-10-23T16:43:51Z',\n",
       " 'lastUpdatedDateTime': '2020-10-23T16:43:52Z',\n",
       " 'analyzeResult': {'version': '3.0.0',\n",
       "  'readResults': [{'page': 1,\n",
       "    'angle': 0,\n",
       "    'width': 534,\n",
       "    'height': 300,\n",
       "    'unit': 'pixel',\n",
       "    'lines': []}]}}"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "{\n",
    "    \"status\": \"succeeded\",\n",
    "    \"createdDateTime\": \"2020-10-23T16:43:51Z\",\n",
    "    \"lastUpdatedDateTime\": \"2020-10-23T16:43:52Z\",\n",
    "    \"analyzeResult\": {\n",
    "        \"version\": \"3.0.0\",\n",
    "        \"readResults\": [\n",
    "            {\n",
    "                \"page\": 1,\n",
    "                \"angle\": 0,\n",
    "                \"width\": 534,\n",
    "                \"height\": 300,\n",
    "                \"unit\": \"pixel\",\n",
    "                \"lines\": []\n",
    "            }\n",
    "        ]\n",
    "    }\n",
    "}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 学习人脸识别和计算机视觉心得体会\n",
    "\n",
    "个人觉得API是学习网新以来最难搞的一门课程。讲真一开始真的不是听得很懂到底是在干嘛，但慢慢通过老师一次又一次的讲解以及自己慢慢的去一点点摸索。现在开始慢慢懂得这一堆代码中的门道，虽然还是个菜鸟，但总算是有进步了。从一开始听课听得头都大，到现在基本上在课堂能理解老师在讲什么，跟得上老师的节奏。在摸索过程中，了解到其实API在我们生活中的应用是很广泛的，很多地方都需要用到这一门技术。希望目前的进步是一个良好的开端，在剩下的时间中能够更好地学习API。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "243px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
